昨天介紹完了 Vue 元件的優缺點及兩種註冊方式,今天就要繼續介紹有關 Vue 元件之間傳遞資料的方式啦!
props 是用來從父元件向子元件傳遞資料的機制。父元件可以將資料通過 props 屬性傳遞給子元件,子元件則可以使用這些資料來渲染自己或進行其他操作。
寫法:<元件名稱 Props名稱="傳入變數" />
父元件透過自定義屬性將資料傳入子元件,如下:
<child-component :message="parentMessage"/>
使用 v-bind 為動態傳入寫法,若只需傳入靜態屬性,則不需使用 v-bind
子元件接收傳入值:
<template>
  <div>
    <p>{{ message }}</p>
  </div>
</template>
<script>
export default {
  props: {
    message: String //名稱: 型別
  }
};
</script>
此範例中,父元件使用 v-bind 將 parentMessage 傳遞給子組件的 message prop。在子元件中,我們使用 {{ message }} 顯示這個 prop 的值。
emit 是用來在子元件向父元件發送事件的方式。子元件可以觸發事件,並將資料通過事件傳遞給父元件,父元件可以監聽這些事件並執行相應的處理。
寫法:this.$emit('emit名稱', '回傳給父元件的值')
子元件觸發自定義事件:
export default {
  methods: {
    sendMessage() {
      this.$emit('messageSent', '這是從子元件發送的訊息');
    }
  }
};
父元件可以使用 v-on 來監聽這些事件:
<template>
  <div>
    <child-component @messageSent="handleMessage"></child-component>
    <p>{{ receivedMessage }}</p>
  </div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      receivedMessage: ''
    };
  },
  methods: {
    handleMessage(message) {
      this.receivedMessage = message;
    }
  }
};
</script>
在此範例中,我們在父元件使用 this.$emit 觸發了一個名為 messageSent 的自定義事件,並傳遞了一個數據。在父元件中,我們使用 v-on 監聽這個事件,並在 handleMessage 方法中處理事件觸發時的數據。
總結來說,Vue.js 中的 props 和 emit 是用來實現父子元件之間資料傳遞的重要概念。
props 用於父元件向子元件傳遞資料。父元件可以將資料通過 props 屬性傳遞給子元件,使子元件可以使用這些資料來渲染自己或進行其他操作。在子元件中,你需要在 props 選項中聲明接收的prop的名稱和類型,以確保資料的正確性。emit 則用於子元件向父元件發送事件。子元件可以使用 this.$emit 方法觸發自定義事件,並將資料傳遞給父元件。父元件可以使用 v-on 或 @ 來監聽這些事件,並在相應的處理函數中處理接收到的資料。